home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / basic / svgaqb21.zip / SVGAMOD2.BAS < prev    next >
BASIC Source File  |  1994-05-09  |  38KB  |  1,229 lines

  1. '****************************************************************************
  2. '*
  3. '*      'SVGAQB' & 'SVGAPV' A Super VGA Graphics Librarys for use with
  4. '*      MS QuickBASIC 4.X and MS PDS/VBDOS
  5. '*      Copyright 1993-1994 by Stephen L. Balkum and Daniel A. Sill
  6. '*
  7. '*      MS, QuickBASIC, PDS, and VBDOS are registered trademarks of
  8. '*      Microsoft Corporation. GIF and 'Graphics Interchange Format' are
  9. '*      trademarks (TM) ofCompuServe, Incorporated, an H&R Block Company.
  10. '*
  11. '*    **************** UNREGISTERED SHAREWARE VERSION **********************
  12. '*    * FOR EVALUATION ONLY. NOT FOR RESALE IN ANY FORM. SOFTWARE WRITTEN  *
  13. '*    * USING THIS UNREGISTERED SHAREWARE GRAPHICS LIBRARY MAY NOT BY SOLD *
  14. '*    * OR USED FOR ANY PURPOSE OTHER THAN THE EVALUATION OF THIS LIBRARY. *
  15. '*    **********************************************************************
  16. '*
  17. '*    **************** NO WARRANTIES AND NO LIABILITY **********************
  18. '*    * Stephen L. Balkum and Daniel A. Sill provide no warranties, either *
  19. '*    * expressed or implied, of merchant ability, or fitness, for a       *
  20. '*    * particular use or purpose of this SOFTWARE and documentation.      *
  21. '*    * In no event shall Stephen L. Balkum or Daniel A. Sill be held      *
  22. '*    * liable for any damages resulting from the use or misuse of the     *
  23. '*    * SOFTWARE and documentation.                                        *
  24. '*    **********************************************************************
  25. '*
  26. '*    ************** U.S. GOVERNMENT RESTRICTED RIGHTS *********************
  27. '*    * Use, duplication, or disclosure of the SOFTWARE and documentation  *
  28. '*    * by the U.S. Government is subject to the restrictions as set forth *
  29. '*    * in subparagraph (c)(1)(ii) of the Rights in Technical Data and     *
  30. '*    * Computer Software clause at DFARS 252.227-7013.                    *
  31. '*    * Contractor/manufacturer is Stephen L. Balkum and Daniel A. Sill,   *
  32. '*    * P.O. Box 7704, Austin, Texas 78713-7704                            *
  33. '*    **********************************************************************
  34. '*
  35. '*    **********************************************************************
  36. '*    * By using this SOFTWARE or documentation, you agree to the above    *
  37. '*    * terms and conditions.                                              *
  38. '*    **********************************************************************
  39. '*
  40. '****************************************************************************
  41.  
  42.  
  43.     REM $INCLUDE: 'SVGABC.BI'
  44.     REM $INCLUDE: 'SVGADEMO.BI'
  45.  
  46. REM $DYNAMIC
  47.     SUB DO2D (RET$)
  48.  
  49.  
  50.     DIM POINTARRY(0 TO 8) AS P2DType
  51.  
  52.     '*************************************************************************
  53.     '* SET UP THE TITLE
  54.     '*************************************************************************
  55.     TITLE$ = "DEMO 11: 2D functions"
  56.     PALSET PAL, 0, 255
  57.  
  58.     '*************************************************************************
  59.     '* SET UP THE 'STAR' PATTERN OF POINTS
  60.     '*************************************************************************
  61.     SETVIEW 0, 0, GETMAXX, GETMAXY
  62.     CNTX = GETMAXX \ 2
  63.     CNTY = ((GETMAXY - 32) \ 2) + 32
  64.     SPCNG = GETMAXX \ 30
  65.     POINTARRY(0).X = 0
  66.     POINTARRY(0).Y = -SPCNG * 6
  67.     POINTARRY(1).X = SPCNG * 2
  68.     POINTARRY(1).Y = -SPCNG * 2
  69.     POINTARRY(2).X = SPCNG * 6
  70.     POINTARRY(2).Y = 0
  71.     POINTARRY(3).X = SPCNG * 2
  72.     POINTARRY(3).Y = SPCNG * 2
  73.     POINTARRY(4).X = 0
  74.     POINTARRY(4).Y = SPCNG * 6
  75.     POINTARRY(5).X = -SPCNG * 2
  76.     POINTARRY(5).Y = SPCNG * 2
  77.     POINTARRY(6).X = -SPCNG * 6
  78.     POINTARRY(6).Y = 0
  79.     POINTARRY(7).X = -SPCNG * 2
  80.     POINTARRY(7).Y = -SPCNG * 2
  81.     POINTARRY(8).X = 0
  82.     POINTARRY(8).Y = -SPCNG * 6
  83.  
  84.     '*************************************************************************
  85.     '* SHOW D2TRANSLATE
  86.     '*************************************************************************
  87.     FILLSCREEN 0
  88.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  89.     A$ = "D2TRANSLATE (Points,XTrans,YTrans,InAry,OutAry)"
  90.     DRWSTRING 1, 7, 0, A$, 10, 16
  91.     SETVIEW 0, 32, GETMAXX, GETMAXY
  92.     D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
  93.     SHOWSTAR
  94.     GETKEY RET$
  95.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  96.         FILLSCREEN 0
  97.         SETVIEW 0, 0, GETMAXX, GETMAXY
  98.         EXIT SUB
  99.     END IF
  100.     XTRANS = 0
  101.     YTRANS = 0
  102.     FOR J = 0 TO SPCNG * 2
  103.         XTRANS = XTRANS + 2
  104.         YTRANS = YTRANS + 2
  105.         D2TRANSLATE 9, CNTX + XTRANS, CNTY + YTRANS, POINTARRY(0).X, PLOTARRY(0).X
  106.         SHOWSTAR
  107.         SDELAY 2
  108.     NEXT J
  109.     FOR J = 0 TO SPCNG * 2
  110.         XTRANS = XTRANS - 2
  111.         YTRANS = YTRANS - 2
  112.         D2TRANSLATE 9, CNTX + XTRANS, CNTY + YTRANS, POINTARRY(0).X, PLOTARRY(0).X
  113.         SHOWSTAR
  114.         SDELAY 2
  115.     NEXT J
  116.     GETKEY RET$
  117.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  118.         FILLSCREEN 0
  119.         SETVIEW 0, 0, GETMAXX, GETMAXY
  120.         EXIT SUB
  121.     END IF
  122.  
  123.     '*************************************************************************
  124.     '* SHOW D2SCALE
  125.     '*************************************************************************
  126.     SETVIEW 0, 0, GETMAXX, 31
  127.     FILLVIEW (0)
  128.     SETVIEW 0, 0, GETMAXX, GETMAXY
  129.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  130.     A$ = "D2SCALE (Points,XScale,YScale,InAry,OutAry)"
  131.     DRWSTRING 1, 7, 0, A$, 10, 16
  132.     SETVIEW 0, 32, GETMAXX, GETMAXY
  133.     D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
  134.     SHOWSTAR
  135.     FOR J = 256 TO 380 STEP 4
  136.         D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
  137.         D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
  138.         SHOWSTAR
  139.         SDELAY 2
  140.         NEXT J
  141.     X = J
  142.     FOR J = X TO 256 STEP -4
  143.         D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
  144.         D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
  145.         SHOWSTAR
  146.         SDELAY 2
  147.     NEXT J
  148.     X = J
  149.     FOR J = X TO 128 STEP -4
  150.         D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
  151.         D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
  152.         SHOWSTAR
  153.         SDELAY 2
  154.     NEXT J
  155.     X = J
  156.     FOR J = X TO 256 STEP 4
  157.         D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
  158.         D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
  159.         SHOWSTAR
  160.         SDELAY 2
  161.     NEXT J
  162.     GETKEY RET$
  163.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  164.         FILLSCREEN 0
  165.         SETVIEW 0, 0, GETMAXX, GETMAXY
  166.         EXIT SUB
  167.     END IF
  168.  
  169.     '*************************************************************************
  170.     '* SHOW D2ROTATE (ABOUT THE CENTER OF THE OBJECT)
  171.     '*************************************************************************
  172.     SETVIEW 0, 0, GETMAXX, 31
  173.     FILLVIEW (0)
  174.     SETVIEW 0, 0, GETMAXX, GETMAXY
  175.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  176.     A$ = "D2ROTATE (Points,XOrigin,YOrigin,Angle,InAry,OutAry)"
  177.     DRWSTRING 1, 7, 0, A$, 10, 16
  178.     A$ = "Lets do it about the center of the object."
  179.     DRWSTRING 1, 7, 0, A$, 10, 32
  180.     SETVIEW 0, 32, GETMAXX, GETMAXY
  181.     D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
  182.     SHOWSTAR
  183.     FOR J = 0 TO 180
  184.         D2ROTATE 9, 0, 0, J, POINTARRY(0).X, PLOTARRY(0).X
  185.         D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
  186.         SHOWSTAR
  187.         SDELAY 2
  188.     NEXT J
  189.     FOR J = 180 TO 0 STEP -2
  190.         D2ROTATE 9, 0, 0, J, POINTARRY(0).X, PLOTARRY(0).X
  191.         D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
  192.         SHOWSTAR
  193.         SDELAY 2
  194.     NEXT J
  195.     GETKEY RET$
  196.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  197.         FILLSCREEN 0
  198.         SETVIEW 0, 0, GETMAXX, GETMAXY
  199.         EXIT SUB
  200.     END IF
  201.  
  202.     '*************************************************************************
  203.     '* SHOW D2ROTATE (ABOUT AN ARBITRARY POINT)
  204.     '*************************************************************************
  205.     SETVIEW 0, 0, GETMAXX, 48
  206.     FILLVIEW (0)
  207.     SETVIEW 0, 0, GETMAXX, GETMAXY
  208.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  209.     A$ = "D2ROTATE (Points,XOrigin,YOrigin,Angle,InAry,OutAry)"
  210.     DRWSTRING 1, 7, 0, A$, 10, 16
  211.     A$ = "Lets do it about an arbitrary point."
  212.     DRWSTRING 1, 7, 0, A$, 10, 32
  213.     SETVIEW 0, 32, GETMAXX, GETMAXY
  214.     D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
  215.     SHOWSTAR
  216.     FOR J = 0 TO 360 STEP 2
  217.         D2ROTATE 9, 0, SPCNG * 6, J, POINTARRY(0).X, PLOTARRY(0).X
  218.         D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
  219.         SHOWSTAR
  220.         SDELAY 2
  221.     NEXT J
  222.     SETVIEW 0, 0, GETMAXX, GETMAXY
  223.     GETKEY RET$
  224.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  225.         FILLSCREEN 0
  226.         EXIT SUB
  227.     END IF
  228.  
  229.     END SUB
  230.  
  231.     SUB DO3D (RET$)
  232.  
  233.  
  234.  
  235.  
  236.     '*************************************************************************
  237.     '* SET UP THE TITLE
  238.     '********************************